package beans;

import java.io.IOException;
import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import model.Alumno;
import model.Profesor;

import org.primefaces.context.RequestContext;

import controlador.Principal;

public class LoginBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public String username;
	public String password;
	public Profesor profesor;
	public Alumno alumno;

	public LoginBean() {
		super();
		// Principal.incio();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public void login(ActionEvent actionEvent) {
		/*
		 * RequestContext context = RequestContext.getCurrentInstance();
		 * FacesMessage msg = null; boolean loggedIn = false; profesor = new
		 * Profesor(); profesor.setDocenteId(username);
		 * profesor.setPassword(password); profesor =
		 * Principal.loginProfesor(profesor); alumno = new Alumno();
		 * alumno.setAlumnoId(username); alumno.setPassword(password); alumno =
		 * Principal.loginAlumno(alumno);
		 * 
		 * if(profesor!=null) { loggedIn = true; msg = new
		 * FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido",
		 * profesor.getDocenteId()); try {
		 * FacesContext.getCurrentInstance().getExternalContext
		 * ().redirect("/Sistema_Evaluacion_Aprendizaje/faces/profesor_home.xhtml"
		 * ); } catch (IOException e) { // TODO Auto-generated catch block
		 * e.printStackTrace(); } }else if(alumno!=null){ loggedIn = true; msg =
		 * new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido",
		 * alumno.getAlumnoId()); try {
		 * FacesContext.getCurrentInstance().getExternalContext
		 * ().redirect("/Sistema_Evaluacion_Aprendizaje/faces/alumno_home.xhtml"
		 * ); } catch (IOException e) { // TODO Auto-generated catch block
		 * e.printStackTrace(); } } else
		 * if(username.equals("admin")&&password.equals("admin")){ loggedIn =
		 * true; msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
		 * "Bienvenido", username); try {
		 * FacesContext.getCurrentInstance().getExternalContext().redirect(
		 * "/Sistema_Evaluacion_Aprendizaje/faces/asignar_permisos.xhtml"); }
		 * catch (IOException e) { // TODO Auto-generated catch block
		 * e.printStackTrace(); } }
		 * 
		 * else { loggedIn = false; msg = new
		 * FacesMessage(FacesMessage.SEVERITY_WARN, "Error de login",
		 * "Datos invalidos"); }
		 * 
		 * FacesContext.getCurrentInstance().addMessage(null, msg);
		 * context.addCallbackParam("loggedIn", loggedIn);
		 */
		Principal.CerrarSesion();
		Principal.IniciarSesion();
		RequestContext context = RequestContext.getCurrentInstance();
		FacesMessage msg = null;
		boolean loggedIn = false;
		profesor = new Profesor();
		profesor.setDocenteId(username);
		profesor.setPassword(password);
		profesor = Principal.loginProfesor(profesor);

		if (profesor != null) {
			loggedIn = true;
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido",
					profesor.getDocenteId());
			try {
				FacesContext
						.getCurrentInstance()
						.getExternalContext()
						.redirect(
								"/Sistema_Evaluacion_Aprendizaje/faces/profesor_home.xhtml");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} else {
			System.out.println("Entro profesor null");
			Principal.CerrarSesion();
			Principal.IniciarSesion();
			System.out.println("salio profesor null");
			alumno = new Alumno();
			alumno.setAlumnoId(username);
			alumno.setPassword(password);
			alumno = Principal.loginAlumno(alumno);
			if (alumno != null) {
				loggedIn = true;
				msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
						"Bienvenido", alumno.getAlumnoId());
				try {
					FacesContext
							.getCurrentInstance()
							.getExternalContext()
							.redirect(
									"/Sistema_Evaluacion_Aprendizaje/faces/alumno_home.xhtml");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} else {
				Principal.CerrarSesion();
				Principal.IniciarSesion();
				if (username.equals("admin") && password.equals("admin")) {
					loggedIn = true;
					msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
							"Bienvenido", username);
					try {
						FacesContext
								.getCurrentInstance()
								.getExternalContext()
								.redirect(
										"/Sistema_Evaluacion_Aprendizaje/faces/asignar_permisos.xhtml");
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}

				else {
					loggedIn = false;
					msg = new FacesMessage(FacesMessage.SEVERITY_WARN,
							"Error de login", "Datos invalidos");
				}
			}
		}
		FacesContext.getCurrentInstance().addMessage(null, msg);
		context.addCallbackParam("loggedIn", loggedIn);
	}

	public Profesor getProfesor() {
		return profesor;
	}

	public void setProfesor(Profesor profesor) {
		this.profesor = profesor;
	}
}
